package com.example.demo.order.service;

import com.example.demo.order.dto.request.PaymentRequest;
import com.example.demo.order.dto.response.PaymentResponse;

/**
 * @ClassName PaymentService
 * @Description 支付服务接口
 * @Author MingChang.Wei
 * @Date 2025/9/26
 **/
public interface PaymentService {
    
    /**
     * 发起支付
     * @param request 支付请求
     * @return 支付响应
     */
    PaymentResponse initiatePayment(PaymentRequest request);
    
    /**
     * 处理支付回调
     * @param orderNo 订单号
     * @param paymentResult 支付结果
     * @return 处理结果
     */
    boolean handlePaymentCallback(String orderNo, String paymentResult);
    
    /**
     * 查询支付状态
     * @param orderNo 订单号
     * @return 支付状态
     */
    String getPaymentStatus(String orderNo);
    
    /**
     * 申请退款
     * @param orderNo 订单号
     * @param refundAmount 退款金额
     * @param reason 退款原因
     * @return 退款结果
     */
    boolean requestRefund(String orderNo, String refundAmount, String reason);
}
